﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CG67.EspaceRencontre.Domaine;
using CG67.EspaceRencontre.AccesDonnees;
using System.Data;

namespace CG67.EspaceRencontre.Services
{
    /// <summary>
    /// comporte les méthodes associées à l'objet "Enfant" défini dans la couche "Domaine" 
    /// </summary>
    public class EnfantService
    {
        #region GetAllEnfants
        /// <summary>
        /// récupère tous les enfants ACTIFS de la table Enfant
        /// </summary>
        /// <returns><c>List<Enfant></c></returns>
        public static List<Enfant> GetAllEnfants()
        {
            DataSet ds = EnfantDB.GetAllEnfants();
            DataTable dt = ds.Tables[0];
            List<Enfant> listeEnfants = new List<Enfant>();

            foreach (DataRow dr in dt.Rows)
            {
                listeEnfants.Add(new Enfant(Int32.Parse(dr["ID"].ToString()), dr["NOM"].ToString(), dr["PRENOM"].ToString(), DateTime.Parse(dr["DATENAISSANCE"].ToString()), true));
            }

            return listeEnfants;
        } 
        #endregion

        #region GetEnfantsByRendezVousId
        /// <summary>
        /// récupère tous les enfants d'un rendez-vous particulier
        /// </summary>
        /// <param name="id">identifiant de l'enfant</param>
        /// <returns><c>List<Enfant></c></returns>
        public static List<Enfant> GetEnfantsByRendezVousId(int id)
        {
            DataSet ds = EnfantDB.GetEnfantsByRendezVousId(id);
            DataTable dt = ds.Tables[0];
            List<Enfant> listeEnfants = new List<Enfant>();

            foreach (DataRow dr in dt.Rows)
            {
                listeEnfants.Add(new Enfant(Int32.Parse(dr["ID"].ToString()), dr["NOM"].ToString(), dr["PRENOM"].ToString(), DateTime.Parse(dr["DATENAISSANCE"].ToString()), true));
            }

            return listeEnfants;
        } 
        #endregion

        #region GetEnfantById
        /// <summary>
        /// récupère l'enfant correspondant à l'identifiant entré
        /// </summary>
        /// <param name="id">identifiant de l'enfant</param>
        /// <returns><c>Enfant</c></returns>
        public static Enfant GetEnfantById(int id)
        {
            DataSet ds = EnfantDB.GetEnfantById(id);
            DataTable dt = ds.Tables[0];
            DataRow dr = dt.Rows[0];

            return new Enfant(Int32.Parse(dr["ID"].ToString()), dr["NOM"].ToString(), dr["PRENOM"].ToString(), DateTime.Parse(dr["DATENAISSANCE"].ToString()), true);
        } 
        #endregion

        #region DeleteEnfant
        /// <summary>
        /// permet de supprimer un enfant de la gridview (passe l'enfant à inactif dans la BDD)
        /// </summary>
        /// <param name="id">identifiant de l'enfant</param>
        public static void DeleteEnfant(int id)
        {
            EnfantDB.DeleteEnfant(id);
        } 
        #endregion

        #region UpdateEnfant
        /// <summary>
        /// permet de mettre à jour les données d'un enfant
        /// </summary>
        /// <param name="id">identifiant de l'enfant</param>
        /// <param name="nom">nom de l'enfant</param>
        /// <param name="prenom">prenom de l'enfant</param>
        /// <param name="dateNaissance">date de naissance de l'enfant</param>
        public static void UpdateEnfant(int id, string nom, string prenom, DateTime dateNaissance)
        {
            EnfantDB.UpdateEnfant(id, nom, prenom, dateNaissance);
        } 
        #endregion

        #region CreateEnfant
        /// <summary>
        /// permet de créer un enfant 
        /// </summary>
        /// <param name="nom">nom de l'enfant</param>
        /// <param name="prenom">nom de l'enfant</param>
        /// <param name="dateNaissance">date de naissance de l'enfant</param>
        public static void CreateEnfant(string nom, string prenom, DateTime dateNaissance)
        {
            EnfantDB.CreateEnfant(nom, prenom, dateNaissance);
        } 
        #endregion
    }
}
